package com.itshen.jdk8;

/**
 * Lambda表达式demo
 *
 * Lambda允许把函数作为一个方法的参数（函数作为参数传递进方法中）
 * 语法格式：
 * (parameters) -> expression 或者 (parameters) -> {statements;}
 *
 * PS：
 * （1）如果参数只有一个，可以不加圆括号
 * （2）不需要声明参数类型
 * （3）如果只有一条语句，可以不加花括号
 * （4）如果只有一条语句，编译器会自动将值返回；如果多条的话，需要手动return
 *
 * @author: stephen.shen
 * @create: 2018-12-06 9:41
 */
public class LambdaDemo {

    public static void main(String[] args) {
        testJdk7();
        testJdk8();
    }

    static void testJdk7(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("This is jdk7 implement thread");
            }
        }).start();
    }

    static void testJdk8(){
        // Lambda要求实现的接口中只有一个方法

        // 实现方式一
        new Thread(()-> System.out.println("This is jdk8 implement thread")).start() ;

        // 实现方式二
        Runnable target = ()-> System.out.println("This is jdk8 implement thread");
        new Thread(target).start();


    }
}
